﻿//-----------------------------------------------------------------------
// <copyright file="ICategoryListView.cs" company="Forebrain Technology, LLC">
//
// Copyright (c) Forebrain Technology, LLC. All rights reserved.
// 
// This source code is released under the Microsoft Public License (Ms-PL).
//
// </copyright>
//-----------------------------------------------------------------------
namespace PivotCollectionMaker.WinFormApplication.Controls
{
    using System;

    /// <summary>
    /// Interface into a Category List View allowing interaction with the view.
    /// </summary>
    public interface ICategoryListView
    {
        /// <summary>
        /// Occurs when category item selected.
        /// </summary>
        event EventHandler CategoryItemSelected;

        /// <summary>
        /// Occurs when schema changed.
        /// </summary>
        event EventHandler SchemaChanged;

        /// <summary>
        /// Gets the index of the selected category.
        /// </summary>
        /// <value>The index of the selected category.</value>
        int SelectedCategoryIndex { get; }

        /// <summary>
        /// Gets the selected column.
        /// </summary>
        /// <value>The selected column of the I category list view.</value>
        string SelectedColumn { get; }

        /// <summary>
        /// Removes the category.
        /// </summary>
        /// <param name="index">The index.</param>
        void RemoveCategory(int index);

        /// <summary>
        /// Shows the message.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="caption">The caption.</param>
        void ShowMessage(string message, string caption);

        /// <summary>
        /// Shows the category property.
        /// </summary>
        /// <param name="category">The category.</param>
        void ShowCategoryProperty(PropertyBag category);

        /// <summary>
        /// Clears the category list.
        /// </summary>
        void ClearCategoryList();

        /// <summary>
        /// Clears the column list.
        /// </summary>
        void ClearColumnList();

        /// <summary>
        /// Adds the specified item to the column list .
        /// </summary>
        /// <param name="item">The specified item to add to the column list.</param>
        void AddColumnListItem(string item);

        /// <summary>
        /// Adds the specified item to the category list.
        /// </summary>
        /// <param name="item">The specified item to add to the category list.</param>
        void AddCategoryListItem(string item);
    }
}
